package main

import "fmt"

type Car interface {
	GetName() string
	Run()
}

type Tesla struct {
	Name string
}

func (t *Tesla) GetName() string {
	return t.Name
}

func (t *Tesla) Run() {
	fmt.Printf("%s is running\n", t.Name)
}

func main() {
	var c Car
	var t Tesla = Tesla{"Tesla Model S"}
	c = &t  // 上面是用指针*Tesla实现了接口的方法，这里要传地址
	/*  或者在定义的时候，就定义结构体指针
	var t *Tesla = &Tesla{"Tesla Model X"}
	c = t
	*/
	fmt.Println(c.GetName())
	c.Run()
}